org.apache.cassandra.transport.Message.Dispatcher.messageReceived(ChannelHandlerContext, MessageEvent)
	org.apache.cassandra.transport.messages.QueryMessage.execute(QueryState)
		org.apache.cassandra.cql3.QueryProcessor.process(String, QueryState, QueryOptions)
			org.apache.cassandra.cql3.QueryProcessor.getStatement(String, ClientState)
				org.apache.cassandra.cql3.QueryProcessor.parseStatement(String)
					{ 
						//ANTLR相关的词法语法解析(CharStream=>CqlLexer=>TokenStream=>CqlParser)
						CharStream stream = new ANTLRStringStream(queryStr);
						CqlLexer lexer = new CqlLexer(stream);
						TokenStream tokenStream = new CommonTokenStream(lexer);
						CqlParser parser = new CqlParser(tokenStream);
					}
					org.apache.cassandra.cql3.CqlParser.query()
						org.apache.cassandra.cql3.statements.UpdateStatement.ParsedInsert.ParsedInsert(CFName, Raw, List<ColumnIdentifier>, List<Raw>, boolean)
						org.apache.cassandra.cql3.statements.ParsedStatement.setBoundVariables(List<ColumnIdentifier>)
				org.apache.cassandra.cql3.statements.CFStatement.prepareKeyspace(ClientState)
				org.apache.cassandra.cql3.statements.ModificationStatement.Parsed.prepare()
					org.apache.cassandra.cql3.statements.ParsedStatement.getBoundsVariables()
					org.apache.cassandra.cql3.statements.ModificationStatement.Parsed.prepare(VariableSpecifications)
						org.apache.cassandra.cql3.Attributes.Raw.prepare(String, String) //取得timestamp和timeToLive的值
							org.apache.cassandra.cql3.statements.CFStatement.keyspace()
							org.apache.cassandra.cql3.statements.CFStatement.columnFamily()
						org.apache.cassandra.cql3.Attributes.collectMarkerSpecification(VariableSpecifications)
						org.apache.cassandra.cql3.statements.UpdateStatement.ParsedInsert.prepareInternal(CFDefinition, VariableSpecifications, Attributes)
							org.apache.cassandra.cql3.statements.UpdateStatement.UpdateStatement(int, CFMetaData, Attributes)
							org.apache.cassandra.cql3.statements.ModificationStatement.addKeyValue(ColumnIdentifier, Term)
								org.apache.cassandra.cql3.statements.ModificationStatement.addKeyValues(ColumnIdentifier, Restriction)
							org.apache.cassandra.cql3.statements.ModificationStatement.addOperation(Operation)
					org.apache.cassandra.cql3.statements.ParsedStatement.Prepared
						org.apache.cassandra.cql3.VariableSpecifications.getSpecifications()
			org.apache.cassandra.cql3.QueryProcessor.processStatement(CQLStatement, QueryState, QueryOptions, String)
				org.apache.cassandra.cql3.statements.ModificationStatement.checkAccess(ClientState)
					org.apache.cassandra.service.ClientState.hasColumnFamilyAccess(String, String, Permission)
					org.apache.cassandra.cql3.statements.ModificationStatement.hasConditions()
				org.apache.cassandra.cql3.statements.ModificationStatement.validate(ClientState)
				org.apache.cassandra.cql3.statements.ModificationStatement.execute(QueryState, QueryOptions)
					org.apache.cassandra.cql3.statements.ModificationStatement.executeWithoutCondition(QueryState, QueryOptions)
						org.apache.cassandra.db.ConsistencyLevel.validateForWrite(String)
						org.apache.cassandra.cql3.statements.ModificationStatement.getMutations(List<ByteBuffer>, boolean, ConsistencyLevel, long, boolean)
							org.apache.cassandra.cql3.statements.ModificationStatement.buildPartitionKeyNames(List<ByteBuffer>)
							org.apache.cassandra.cql3.statements.ModificationStatement.createClusteringPrefixBuilder(List<ByteBuffer>)
							org.apache.cassandra.cql3.statements.ModificationStatement.readRequiredRows(List<ByteBuffer>, ColumnNameBuilder, boolean, ConsistencyLevel)
							org.apache.cassandra.cql3.UpdateParameters.UpdateParameters(CFMetaData, List<ByteBuffer>, long, int, Map<ByteBuffer, ColumnGroupMap>)
							org.apache.cassandra.cql3.statements.UpdateStatement.updateForKey(ByteBuffer, ColumnNameBuilder, UpdateParameters)
								org.apache.cassandra.db.ColumnFamily.Factory.create(CFMetaData)
								org.apache.cassandra.cql3.statements.UpdateStatement.addUpdateForKey(ColumnFamily, ByteBuffer, ColumnNameBuilder, UpdateParameters)
									org.apache.cassandra.cql3.statements.ModificationStatement.getOperations()
									org.apache.cassandra.cql3.Constants.Setter.execute(ByteBuffer, ColumnFamily, ColumnNameBuilder, UpdateParameters)
										org.apache.cassandra.cql3.UpdateParameters.makeColumn(ByteBuffer, ByteBuffer)
											org.apache.cassandra.cql3.QueryProcessor.validateCellName(ByteBuffer)
											org.apache.cassandra.db.Column.create(ByteBuffer, ByteBuffer, long, int, CFMetaData)
												org.apache.cassandra.db.Column.Column(ByteBuffer, ByteBuffer, long)
										org.apache.cassandra.db.ColumnFamily.addColumn(Column)
							org.apache.cassandra.cql3.statements.ModificationStatement.makeMutation(ByteBuffer, ColumnFamily, ConsistencyLevel, boolean)
								org.apache.cassandra.db.RowMutation.RowMutation(String, ByteBuffer, ColumnFamily)
						org.apache.cassandra.service.StorageProxy.mutateWithTriggers(Collection<? extends IMutation>, ConsistencyLevel, boolean)
							org.apache.cassandra.triggers.TriggerExecutor.execute(Collection<? extends IMutation>)
							org.apache.cassandra.service.StorageProxy.mutate(Collection<? extends IMutation>, ConsistencyLevel)
								org.apache.cassandra.locator.DynamicEndpointSnitch.getDatacenter(InetAddress)
									org.apache.cassandra.locator.SimpleSnitch.getDatacenter(InetAddress)
								org.apache.cassandra.service.StorageProxy.performWrite(IMutation, ConsistencyLevel, String, WritePerformer, Runnable, WriteType)
									org.apache.cassandra.db.Keyspace.open(String)
									org.apache.cassandra.db.Keyspace.getReplicationStrategy()
									org.apache.cassandra.dht.Murmur3Partitioner.getToken(ByteBuffer)
									org.apache.cassandra.service.StorageService.getNaturalEndpoints(String, RingPosition)
									org.apache.cassandra.locator.TokenMetadata.pendingEndpointsFor(Token, String)
									org.apache.cassandra.locator.AbstractReplicationStrategy.getWriteResponseHandler(Collection<InetAddress>, Collection<InetAddress>, ConsistencyLevel, Runnable, WriteType)
									org.apache.cassandra.service.AbstractWriteResponseHandler.assureSufficientLiveNodes()
										org.apache.cassandra.db.ConsistencyLevel.assureSufficientLiveNodes(Keyspace, Iterable<InetAddress>)
											org.apache.cassandra.db.ConsistencyLevel.blockFor(Keyspace)
												org.apache.cassandra.locator.SimpleStrategy.getReplicationFactor()
									org.apache.cassandra.service.StorageProxy.standardWritePerformer.new WritePerformer() {...}.apply(IMutation, Iterable<InetAddress>, AbstractWriteResponseHandler, String, ConsistencyLevel)
										org.apache.cassandra.service.StorageProxy.sendToHintedEndpoints(RowMutation, Iterable<InetAddress>, AbstractWriteResponseHandler, String)
											org.apache.cassandra.gms.IFailureDetector.isAlive(InetAddress)
											org.apache.cassandra.service.StorageProxy.insertLocal(RowMutation, AbstractWriteResponseHandler)
											或者org.apache.cassandra.net.MessagingService.sendRR(MessageOut<? extends IMutation>, InetAddress, AbstractWriteResponseHandler)
												异步org.apache.cassandra.service.StorageProxy.insertLocal(...).new DroppableRunnable() {...}.runMayThrow()
													org.apache.cassandra.sink.SinkManager.processWriteRequest(IMutation)
													org.apache.cassandra.db.RowMutation.apply()
														org.apache.cassandra.db.Keyspace.open(String)
														org.apache.cassandra.db.Keyspace.apply(RowMutation, boolean)
															写提交日志org.apache.cassandra.db.commitlog.CommitLog.add(RowMutation)
															org.apache.cassandra.dht.Murmur3Partitioner.decorateKey(ByteBuffer)
															辅助索引相关的管理器org.apache.cassandra.db.index.SecondaryIndexManager.updaterFor(DecoratedKey, ColumnFamily)
															org.apache.cassandra.db.ColumnFamilyStore.apply(DecoratedKey, ColumnFamily, Updater)
															写Memtable org.apache.cassandra.db.Memtable.put(DecoratedKey, ColumnFamily, Updater)
													org.apache.cassandra.service.WriteResponseHandler.response(MessageIn)
													异步线程结束，唤醒主线程
								主线程等待org.apache.cassandra.service.AbstractWriteResponseHandler.get()
								写时间度量org.apache.cassandra.metrics.LatencyMetrics.addNano(long)
				生成一个Void消息org.apache.cassandra.transport.messages.ResultMessage.Void
org.jboss.netty.channel.Channel.write(Object) 返回ResultMessage.Void给Client

